Make the inspector available via GTK_DEBUG
authorMatthias Clasen <mclasen@redhat.com>
Sat, 10 May 2014 17:22:17 +0000 (13:22 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 11 May 2014 02:04:36 +0000 (22:04 -0400)
Change things around so GTK_DEBUG=interactive also brings
up the inspector window.

gtk/gtkdebug.h
gtk/gtkmain.c
gtk/gtkwindow.c
gtk/gtkwindowprivate.h

index a91e6da636c62991b715285625a78f3ca56acc70..895520eba68e4b97c3ca8d92aebacfb54ad9781b 100644 (file)
@@ -51,7 +51,8 @@ typedef enum {
   GTK_DEBUG_NO_CSS_CACHE    = 1 << 13,
   GTK_DEBUG_BASELINES       = 1 << 14,
   GTK_DEBUG_PIXEL_CACHE     = 1 << 15,
-  GTK_DEBUG_NO_PIXEL_CACHE  = 1 << 16
+  GTK_DEBUG_NO_PIXEL_CACHE  = 1 << 16,
+  GTK_DEBUG_INTERACTIVE     = 1 << 17
 } GtkDebugFlag;
 
 #ifdef G_ENABLE_DEBUG
index 9e8fea58172c69ae5a7a973c7759a03fbe21d6ca..0b187d500f0bca4f7c70f932aa75b7c6b8fa683c 100644 (file)
@@ -175,7 +175,8 @@ static const GDebugKey gtk_debug_keys[] = {
   {"no-css-cache", GTK_DEBUG_NO_CSS_CACHE},
   {"baselines", GTK_DEBUG_BASELINES},
   {"pixel-cache", GTK_DEBUG_PIXEL_CACHE},
-  {"no-pixel-cache", GTK_DEBUG_NO_PIXEL_CACHE}
+  {"no-pixel-cache", GTK_DEBUG_NO_PIXEL_CACHE},
+  {"interactive", GTK_DEBUG_INTERACTIVE}
 };
 #endif /* G_ENABLE_DEBUG */
 
@@ -976,10 +977,17 @@ gboolean
 gtk_init_check (int    *argc,
                 char ***argv)
 {
+  gboolean ret;
+
   if (!gtk_parse_args (argc, argv))
     return FALSE;
 
-  return gdk_display_open_default_libgtk_only () != NULL;
+  ret = gdk_display_open_default_libgtk_only () != NULL;
+
+  if (debug_flags & GTK_DEBUG_INTERACTIVE)
+    gtk_window_set_interactive_debugging (TRUE);
+
+  return ret;
 }
 
 #ifdef G_PLATFORM_WIN32
index 06036de7e999072f4f4d8b0ddfa08527a5e9b9c2..d8ce08b71d15de38a8730038993a9aeb45a73f31 100644 (file)
@@ -12428,13 +12428,12 @@ _gtk_window_get_popover_position (GtkWindow             *window,
     *rect = data->rect;
 }
 
-static void
-gtk_window_toggle_debugging (GtkWindow *window)
+static GtkWidget *inspector_window = NULL;
+
+void
+gtk_window_set_interactive_debugging (gboolean enable)
 {
   static GType type = G_TYPE_NONE;
-  static GtkWidget *inspector_window = NULL;
-
-  g_debug ("toggle debugging");
 
   if (type == G_TYPE_NONE)
     {
@@ -12449,15 +12448,22 @@ gtk_window_toggle_debugging (GtkWindow *window)
 
   if (inspector_window == NULL)
     {
-      g_debug ("creating a GtkInspector window");
-
       inspector_window = GTK_WIDGET (g_object_new (type, NULL));
       g_signal_connect (inspector_window, "delete-event",
                         G_CALLBACK (gtk_widget_hide_on_delete), NULL);
     }
 
-  if (gtk_widget_is_visible (inspector_window))
+  if (enable)
+    gtk_window_present (GTK_WINDOW (inspector_window));
+  else
     gtk_widget_hide (inspector_window);
+}
+
+static void
+gtk_window_toggle_debugging (GtkWindow *window)
+{
+  if (GTK_IS_WIDGET (inspector_window) && gtk_widget_is_visible (inspector_window))
+    gtk_window_set_interactive_debugging (FALSE);
   else
-    gtk_window_present (GTK_WINDOW (inspector_window));
+    gtk_window_set_interactive_debugging (TRUE);
 }
index 704026d0010acadd2ed09e6d67152e9d9ac5d8f6..c4f191ccd411ee80a8a02466c97fe7cf7d98b88f 100644 (file)
@@ -110,6 +110,8 @@ void    _gtk_window_get_popover_position (GtkWindow                   *window,
 GdkPixbuf *gtk_window_get_icon_for_size (GtkWindow *window,
                                          gint       size);
 
+void gtk_window_set_interactive_debugging (gboolean enable);
+
 G_END_DECLS
 
 #endif /* __GTK_WINDOW_PRIVATE_H__ */